package com.tech.mapper;

import com.tech.repository.entity.Admin;

import java.util.List;


public interface AdminDao {
	/**
	 * 通过ID查找管理员
	 *
	 * @param id 要查找管理员的所属ID
	 * @return 找到就返回，否则返回null
	 */
	Admin getAdmin(int id);

	/**
	 * 获取所有管理员
	 *
	 * @return 所有管理员信息
	 */
	List<Admin> getAllAdmins();

	/**
	 * 添加新的管理员信息
	 *
	 * @param admin 新的管理员信息
	 * @return 新管理员所属ID
	 */
	int addAdmin(Admin admin);

	/**
	 * 添加新的管理员信息
	 *
	 * @param adminsList 管理员列表
	 * @return 影响的行数
	 */
	int[] addAdmins(List<Admin> adminsList);

	/**
	 * 根据ID删除指定管理员
	 *
	 * @param id 要删除管理员的ID
	 * @return 是否删除成功，不存在时返回false
	 */
	boolean delAdmin(int id);

	/**
	 * 根据管理员名删除指定管理员
	 *
	 * @param name 要删除管理员的名字
	 * @return 是否删除成功，不存在时返回false
	 */
	boolean delAdmin(String name);

	/**
	 * 根据ID批量删除管理员
	 *
	 * @param adminsList 要删除管理员的ID列表
	 * @return 影响到的行数
	 */
	int[] delAdmins(List<Integer> adminsList);

	/**
	 * 删除所有管理员
	 *
	 * @return 如果管理员数据改变就返回true
	 */
	boolean delAllAdmins();

	/**
	 * 根据账号和密码判断是否存在该管理员并返回ID
	 *
	 * @param admin 管理员对象，需要有账号和密码
	 * @return 如果管理员存在则返回该用户ID，不存在则返回 -1
	 */
	int userAuthenticate(Admin admin);
}
